
Adélia Cruz
Neural Network Developer

O RoxyBrowser fornece funcionalidade de navegador por meio de chamadas de API e pode ser integrado com frameworks de automação como Selenium, Puppeteer e Playwright. Sua API foi projetada para permitir que você abra perfis de navegador reais de forma programática e anexe suas ferramentas de automação. A API tem um limite de taxa documentado de 100 chamadas por minuto por ponto de extremidade.
Fonte: https://faq.roxybrowser.org/en/guide/10-API
O CapSolver fornece um fluxo de API de criação e verificação que retorna um token CAPTCHA que você pode injetar na página. O CapSolver suporta vários tipos de CAPTCHA:
ReCaptchaV2TaskProxyLess, retorna gRecaptchaResponseReCaptchaV3TaskProxyLess, retorna gRecaptchaResponse com pontuaçãoAntiTurnstileTaskProxyLess, retorna token Consulte as docsEste guia mostra um fluxo prático e independente de framework: abra um perfil do Roxy via API, anexe seu framework de automação, resolva o CAPTCHA com o CapSolver e injete o token para continuar.
RoxyBrowser é um navegador antidetect para multi-contas com recursos como automação via API e sincronizador de janelas múltiplas.
Para automação, a API é a parte mais relevante:
Suporta integração com Selenium, Puppeteer e Playwright.
As solicitações devem incluir um cabeçalho token.
O host padrão da API é http://127.0.0.1:50000 (a alteração da porta requer reinicialização).
O CapSolver resolve CAPTCHAs por meio de duas chamadas de API:
createTask para enviar os parâmetros do CAPTCHAgetTaskResult para verificar até que o token esteja prontoPara reCAPTCHA v2, o CapSolver retorna gRecaptchaResponse.
getTaskResult é limitado a 120 consultas por tarefa e deve ser chamado dentro de 5 minutos da criação da tarefa.
Por padrão, o host é http://127.0.0.1:50000. Se você alterar a porta, será necessário reiniciar o RoxyBrowser.
Use /browser/workspace para buscar workspaces, depois /browser/list_v3 para listar perfis.
import requests
BASE = "http://127.0.0.1:50000"
HEADERS = {"token": "SUA_CHAVE_API_DO_ROXY"}
workspaces = requests.get(f"{BASE}/browser/workspace", headers=HEADERS).json()
workspace_id = workspaces["data"]["rows"][0]["id"]
profiles = requests.get(
f"{BASE}/browser/list_v3",
params={"workspaceId": workspace_id},
headers=HEADERS
).json()
dir_id = profiles["data"]["rows"][0]["dirId"]
Chame /browser/open. A resposta inclui:
ws: Interface WebSocket para ferramentas de automaçãohttp: Interface HTTP para ferramentas de automaçãodriver: Caminho do WebDriver para integração com SeleniumO modo headless não é suportado.
open_resp = requests.post(
f"{BASE}/browser/open",
json={"workspaceId": workspace_id, "dirId": dir_id, "args": []},
headers=HEADERS
).json()
ws_endpoint = open_resp["data"]["ws"]
http_endpoint = open_resp["data"]["http"]
driver_path = open_resp["data"]["driver"]
Use os endpoints retornados para anexar seu framework:
driver com uma conexão do debugger.Os passos exatos para anexar dependem do seu framework, mas os valores ws, http e driver são explicitamente fornecidos para ferramentas de automação.
import time
import requests
CAPSOLVER_API_KEY = "SUA_CHAVE_API_DO_CAPSOLVER"
CAPSOLVER_BASE = "https://api.capsolver.com"
def create_task(task):
payload = {"clientKey": CAPSOLVER_API_KEY, "task": task}
r = requests.post(f"{CAPSOLVER_BASE}/createTask", json=payload)
data = r.json()
if data.get("errorId", 0) != 0:
raise RuntimeError(data.get("errorDescription", "Erro no CapSolver"))
return data["taskId"]
def get_task_result(task_id, delay=2):
while True:
time.sleep(delay)
r = requests.post(
f"{CAPSOLVER_BASE}/getTaskResult",
json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
)
data = r.json()
if data.get("status") == "ready":
return data["solution"]
if data.get("status") == "failed":
raise RuntimeError(data.get("errorDescription", "Tarefa falhou"))
def solve_recaptcha_v2(website_url, website_key):
task = {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key
}
task_id = create_task(task)
solution = get_task_result(task_id)
return solution.get("gRecaptchaResponse", "")
def solve_recaptcha_v3(website_url, website_key, page_action="verify"):
task = {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key,
"pageAction": page_action
}
task_id = create_task(task)
solution = get_task_result(task_id)
return solution.get("gRecaptchaResponse", "")
def solve_turnstile(website_url, website_key, action=None, cdata=None):
task = {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key
}
# Adicione metadados adicionais se fornecidos
if action or cdata:
task["metadata"] = {}
if action:
task["metadata"]["action"] = action
if cdata:
task["metadata"]["cdata"] = cdata
task_id = create_task(task)
solution = get_task_result(task_id)
return solution.get("token", "")
Para referência:
Abra um perfil do Roxy via /browser/open e anexe seu framework de automação.
Navegue até a página de destino e extraia a chave do site.
Exemplo:
const siteKey = document.querySelector(".g-recaptcha")?.getAttribute("data-sitekey");
Resolva com o CapSolver usando o helper acima.
Injete o token e envie o formulário:
const token = "TOKEN_DO_CAPSOLVER";
const el = document.getElementById("g-recaptcha-response");
el.style.display = "block";
el.value = token;
el.dispatchEvent(new Event("input", { bubbles: true }));
el.dispatchEvent(new Event("change", { bubbles: true }));
A reCAPTCHA v3 funciona de forma diferente - ela roda em segundo plano e retorna uma pontuação (0,0 a 1,0) em vez de exigir interação do usuário.
Extraia a chave do site e a ação da página:
// A chave do site geralmente está em um script ou tag meta
const siteKey = document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey');
// A ação é encontrada em chamadas grecaptcha.execute
// Procure no código da página por: grecaptcha.execute('CHAVE', {action: 'AÇÃO'})
const pageAction = "submit"; // ou "login", "registro", etc.
Resolva com o CapSolver:
token = solve_recaptcha_v3(
website_url="https://exemplo.com/login",
website_key="6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAA",
page_action="login"
)
Injete o token (mesmo processo do v2):
const token = "TOKEN_DO_CAPSOLVER";
document.getElementById("g-recaptcha-response").value = token;
// Se houver um callback, invoque-o
if (typeof ___grecaptcha_cfg !== 'undefined') {
const clients = ___grecaptcha_cfg.clients;
Object.keys(clients).forEach(key => {
if (clients[key].callback) {
clients[key].callback(token);
}
});
}
O Cloudflare Turnstile é uma alternativa moderna de CAPTCHA que é mais rápida de resolver (1-20 segundos).
Extraia a chave do site do Turnstile:
const siteKey = document.querySelector('.cf-turnstile')?.getAttribute('data-sitekey');
// Opcional: extraia a ação e cdata se presentes
const action = document.querySelector('.cf-turnstile')?.getAttribute('data-action');
const cdata = document.querySelector('.cf-turnstile')?.getAttribute('data-cdata');
Resolva com o CapSolver:
token = solve_turnstile(
website_url="https://exemplo.com",
website_key="0x4AAAAAAAxxxxxxxxxxxxxxx",
action=action, // opcional
cdata=cdata // opcional
)
Injete o token do Turnstile:
const token = "TOKEN_DO_CAPSOLVER_TURNSTILE";
// Encontre o campo de resposta do Turnstile
const input = document.querySelector('input[name="cf-turnstile-response"]');
if (input) {
input.value = token;
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
}
// Alternativa: alguns sites usam um nome de entrada diferente
const altInput = document.querySelector('input[name="turnstile-response"]');
if (altInput) {
altInput.value = token;
}
getTaskResult do CapSolver é limitado a 120 verificações dentro de 5 minutos.Pronto para começar? Registre-se no CapSolver e use o código de bônus ROXYBROWSER para obter um bônus adicional de 6% na sua primeira recarga!

O RoxyBrowser suporta Selenium, Puppeteer e Playwright?
Sim. A API foi projetada para integração com esses frameworks.
Onde obtenho o token e o host da API?
Em API -> Configuração da API no RoxyBrowser. O host padrão é http://127.0.0.1:50000.
O que o /browser/open retorna?
Retorna os campos ws, http e driver usados pelas ferramentas de automação.
O modo headless é suportado?
Não, o modo headless não é suportado.
Quais tipos de CAPTCHA o CapSolver suporta?
Como o CapSolver retorna tokens reCAPTCHA v2?
Crie uma tarefa com ReCaptchaV2TaskProxyLess e verifique getTaskResult para gRecaptchaResponse.
Como o reCAPTCHA v3 difere do v2?
A reCAPTCHA v3 roda em segundo plano sem interação do usuário e retorna uma pontuação (0,0-1,0). Ela requer o parâmetro pageAction, que pode ser encontrado procurando por grecaptcha.execute no código da página.
Como resolver o Cloudflare Turnstile?](https://www.capsolver.com/blog/Cloudflare/solver-cloudflare-challenge-turnstile-2024)
Use o tipo de tarefa AntiTurnstileTaskProxyLess com websiteURL e websiteKey. Opcionalmente inclua metadata.action e metadata.cdata se presentes no widget. O Turnstile é resolvido em 1-20 segundos.
Leitura adicional:
Como encontrar a chave do site do Turnstile?
Procure pelo atributo data-sitekey no elemento .cf-turnstile. As chaves do Turnstile começam com 0x4.
Preciso de um proxy para o CapSolver?
Não, os tipos de tarefa *ProxyLess usam a infraestrutura de proxy interna do CapSolver. Use as variantes sem ProxyLess se precisar usar seus próprios proxies.
O RoxyBrowser fornece um ambiente de navegador baseado em perfis com endpoints de automação, e o CapSolver fornece tokens CAPTCHA programáticos. Ao abrir um perfil do Roxy, anexar seu framework e injetar tokens do CapSolver, você pode construir fluxos de automação confiáveis com CAPTCHA.
Aprenda arquitetura de raspagem web escalável em Rust com reqwest, scraper, raspagem assíncrona, raspagem de navegador headless, rotação de proxies e tratamento de CAPTCHA compatível.

Compare o Selenium vs Puppeteer para resolver CAPTCHA. Descubra benchmarks de desempenho, notas de estabilidade e como integrar o CapSolver para o máximo de sucesso.
